package testJdk.base.classloader;

import java.net.URL;

/**
 * @ClassName : learn_jdk.base.classloader.Test02
 * @Description : 类描述
 * Created by cyd on 2021-05-12 21:04:52
 */
public class TestClass {

    public static void main(String[] args) throws ClassNotFoundException {

        URL[] urls = sun.misc.Launcher.getBootstrapClassPath().getURLs();
        for (URL url : urls) {
            System.out.println(url.toExternalForm());
        }

        Class<?> aClass = Class.forName("testJdk.base.classloader.TestClass");
        // classLoader: sun.misc.Launcher$AppClassLoader@18b4aac2
        ClassLoader classLoader = aClass.getClassLoader();

        System.out.println("classLoader: " + classLoader);
        // 第一个参数：类路径   第二个参数：是否完全加载   第三个参数：使用的类加载器
        Class<?> aClass1 = Class.forName("testJdk.base.classloader.TestClass", true, classLoader);
        System.out.println("----------------------------");
        // 一个类的class实例只会有一个，是单例的，以下三种方式得到的对象都是同一个
        System.out.println(aClass);
        System.out.println(TestClass.class);
        System.out.println(new TestClass().getClass());
        System.out.println(aClass == new TestClass().getClass());
        // 一个类的class实例只会有一个，是单例的，该类不同的实例，均指向同一个class实例
        System.out.println("----------------------------");
        TestClass testClass01 = new TestClass();
        TestClass testClass02 = new TestClass();
        System.out.println(testClass01.getClass() == testClass02.getClass());


    }
}